fun main(args: Array<String>) {
    // runFn() 
    applyFn() 
  }
  
  fun applyFn() {
      println("=== 新手机开箱设置 ===")
      // 创建一个手机对象
      class Phone {
          var owner = ""
          var wallpaper = "默认壁纸"
          var ringtone = "默认铃声"
          var apps = mutableListOf<String>()
          
          fun showSettings() {
              println("\n手机设置:")
              println("主人: $owner")
              println("壁纸: $wallpaper")
              println("铃声: $ringtone")
              println("安装的应用: ${apps.joinToString()}")
          }
      }
  
      // val phone = Phone() 
      // phone.owner = "张三"
      // phone.wallpaper = "壁纸1"
      // phone.ringtone = "铃声1"
      // phone.apps.add("微信")
      // phone.apps.add("抖音")
      // phone.showSettings()
  
      val phone = Phone().apply {
          owner = "张三"
          wallpaper = "壁纸1"
          ringtone = "铃声1"
          apps.add("微信")
          apps.add("抖音")
      }
      phone.showSettings()
      // 实现安卓视图的时候 Button(Context).apply { 文字, 背景色...  } 实用
  
  }
  
  fun runFn() {
      // run 创建一个临时的工作区 / 作用域
    val result = run {
      val width = 100
      val height = 200
      width * height  // 返回结果
    }
  
    println(result)
    // 示例1：使用 run 函数对字符串进行处理
    val text = "Hello, Kotlin!"
    val processed = text.run {
      // this 指向 text
      val upper = this.uppercase()
      val replaced = upper.replace("KOTLIN", "World")
      replaced  // 返回最终长度
    }
    println("处理后的长度：$processed")
  
    // 示例2：使用 run 函数进行空安全检查
    val nullable: String? = "Run Example"
    val lengthOrZero = nullable?.run {
      // 仅在非 null 时执行
      this.length * 2
    } ?: 0
    println("非空时长度两倍：$lengthOrZero")
  }